<?php


namespace app\admin\model;


use think\helper\Str;
use think\Model;

class User extends Model
{

    protected $autoWriteTimestamp = true;

    /**
     * 根据搜索条件获取用户列表信息
     * @param $where
     * @param $offset
     * @param $limit
     */
    public function getUsersByWhere(array $where, int $limit)
    {
        return $this->alias('user')->field('user.*,role_name')
            ->join('role rol', 'user.role_id = ' . 'rol.id')
            ->where($where)->order('id desc')->paginate($limit);
    }

    /**
     * 根据用户名检测用户数据
     * @param $userName
     */
    public function checkUser(string $userName)
    {
        return $this->alias('u')
            ->field('u.id,u.user_name,r.role_name,u.role_id,u.head,r.rule,u.password,u.status,u.login_times,u.pass_salt')
            ->leftJoin('role r', 'u.role_id = r.id')
            ->where('u.user_name', $userName)
            ->find();
    }

    /**
     * 先设置密码盐，在生成密码
     *
     * @param $value
     * @return string
     */
    public function setPassWordAttr(string $value): string
    {
        // 如果为空不修改
        if (!empty($value)) {
            $salt = Str::random();
            $this->set('pass_salt', $salt);
            return sha1($value . $salt);
        }

    }

    /**
     * 根据搜索条件获取所有的用户数量
     * @param $where
     */
    public function getAllUsers(array $where)
    {
        return $this->where($where)->count();
    }

}